namespace Terrasoft.Configuration.DgUpdateOrderStatusWebServiceNamespace { using System; using System.Collections; using System.Collections.Generic; using System.ServiceModel; using System.ServiceModel.Web; using System.ServiceModel.Activation; using Terrasoft.Core; using Terrasoft.Web.Common; using Terrasoft.Core.Entities; using System.Threading.Tasks; using DgNCCFIntegration; using System.Xml.Serialization; using System.IO; using Newtonsoft.Json; using System.Xml.Linq; using System.Xml; using System.Net; using System.Xml.Serialization; using System.Text.RegularExpressions; [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class DgUpdateOrderStatusWebService : BaseService { private string _result; private SystemUserConnection _systemUserConnection; private SystemUserConnection SystemUserConnection { get { return _systemUserConnection ?? (_systemUserConnection = (SystemUserConnection)AppConnection.SystemUserConnection); } } [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml)] public DgNCCFIntegration.DgUpdateOrderStatusService.Response.UpdateOrderStatusResponse CallBack(Stream request) { return InitCallBack(request); } public DgNCCFIntegration.DgUpdateOrderStatusService.Response.UpdateOrderStatusResponse InitCallBack(Stream request) { var UpdateOrderStatus = new DgNCCFIntegration.DgUpdateOrderStatusService.Response.UpdateOrderStatusResponse(); StreamReader reader = new StreamReader(request); string content = reader.ReadToEnd(); XDocument xmlDoc = XDocument.Parse(content); string jsonResponse = JsonConvert.SerializeXNode(xmlDoc); var cleanResponseAsJson = Regex.Replace(jsonResponse, "digi:|soap:|soapenv:|@xmlns:|ns4:|#",""); var requestJson = JsonConvert.DeserializeObject(cleanResponseAsJson); var orderType = requestJson.Envelope.Body.UpdateOrderStatus.request.order.OrderType; if (orderType == "31") { DgNCCFIntegration.DgUpdateOrderStatus31Service.Request.Envelope envelope31 = Deserialize(content); DgNCCFIntegration.DgUpdateOrderStatusService.UpdateOrderStatusService UpdateOrderStatusService = new DgNCCFIntegration.DgUpdateOrderStatusService.UpdateOrderStatusService(SystemUserConnection, envelope31.Body.UpdateOrderStatus.request); UpdateOrderStatus = UpdateOrderStatusService.Process(true); } else { DgNCCFIntegration.DgUpdateOrderStatusService.Request.Envelope envelope = Deserialize(content); DgNCCFIntegration.DgUpdateOrderStatusService.UpdateOrderStatusService UpdateOrderStatusService = new DgNCCFIntegration.DgUpdateOrderStatusService.UpdateOrderStatusService(SystemUserConnection, envelope.Body.UpdateOrderStatus.request); UpdateOrderStatus = UpdateOrderStatusService.Process(); } return UpdateOrderStatus; } public T Deserialize(string xml) { T result; XmlSerializer serializer = new XmlSerializer(typeof(T)); using (TextReader reader = new StringReader(xml)) { result = (T)serializer.Deserialize(reader); } return result; } } public class UpdateOrderStatusCallbackRequest { public Envelope Envelope { get; set; } } public class Envelope { public Body Body { get; set; } } public class Body { public UpdateOrderStatus UpdateOrderStatus { get; set; } } public class UpdateOrderStatus { public request request { get; set; } } public class request { public order order { get; set; } } public class order { public string OrderType { get; set; } } }